package com.ruoyi.tactics.utils;

import java.util.ArrayList;
import java.util.List;

public class CombineUtil {
    // 方法：返回取三位数的所有组合
    public static List<List<Integer>> combine(Integer[] nums, Integer num) {
        List<List<Integer>> result = new ArrayList<>();
        if (nums == null || nums.length < num) {
            return result; // 如果数组长度小于num，返回空结果
        }
        backtrack(num, nums, 0, new ArrayList<Integer>(), result);
        return result;
    }

    // 回溯函数，生成所有三位数的组合
    private static void backtrack(Integer num, Integer[] nums, int start, List<Integer> temp, List<List<Integer>> result) {
        if (temp.size() == num) {  // 当组合长度为3时，保存结果
            result.add(new ArrayList<>(temp));
            return;
        }

        for (int i = start; i < nums.length; i++) {
            temp.add(nums[i]);  // 添加当前元素
            backtrack(num, nums, i + 1, temp, result);  // 递归，确保元素不重复
            temp.remove(temp.size() - 1);  // 回溯，移除最后一个元素
        }
    }
}
